﻿Imports Control_Vuelos_BE
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb

Public Class PasajeroADO
    Dim MiConexion As New ConexionADO
    Dim cnx As New SqlConnection(MiConexion.GetCnx)
    Dim cmd As New SqlCommand
    Dim lExito As Boolean

    Public Function CrearPasajero(ByVal pBE As M_PasajeroBE) As Boolean
        cmd.Connection = cnx
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "pr_InsertarPasajero"
        Try
            With pBE
                cmd.Parameters.Add(New SqlParameter("@psNroDocumentoId", SqlDbType.VarChar, 11))
                cmd.Parameters("@psNroDocumentoId").Value = .NroDocumentoId
                cmd.Parameters.Add(New SqlParameter("@psAppPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psAppPasajero").Value = .AppPasajero
                cmd.Parameters.Add(New SqlParameter("@psApmPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psApmPasajero").Value = .ApmPasajero
                cmd.Parameters.Add(New SqlParameter("@psNomPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psNomPasajero").Value = .NomPasajero
                cmd.Parameters.Add(New SqlParameter("@psNacionalidadPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psNacionalidadPasajero").Value = .NacionalidadPasajero
                cmd.Parameters.Add(New SqlParameter("@psTlfPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psTlfPasajero").Value = .TlfPasajero
                cmd.Parameters.Add(New SqlParameter("@psRpcPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psRpcPasajero").Value = .RpcPasajero
                cmd.Parameters.Add(New SqlParameter("@psMailPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psMailPasajero").Value = .MailPasajero
                cmd.Parameters.Add(New SqlParameter("@psCodAnalisis", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodAnalisis").Value = .CodAnalisis
                cmd.Parameters.Add(New SqlParameter("@psCodLugarResidencia", SqlDbType.VarChar, 3))
                cmd.Parameters("@psCodLugarResidencia").Value = .CodLugarResidencia
            End With
            cnx.Open()
            cmd.ExecuteNonQuery()
            lExito = True
        Catch x As SqlException
            MsgBox("Reserva (pr_InsertarPasajero) --> " & x.Message, MsgBoxStyle.Critical)
            lExito = False
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return lExito
    End Function

    Public Function ModificarPasajero(ByVal pBE As M_PasajeroBE) As Boolean
        cmd.Connection = cnx
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "pr_ModificarPasajero"
        Try
            With pBE
                cmd.Parameters.Add(New SqlParameter("@pnCodPasajero", SqlDbType.Int))
                cmd.Parameters("@pnCodPasajero").Value = .CodPasajero
                cmd.Parameters.Add(New SqlParameter("@psNroDocumentoId", SqlDbType.VarChar, 11))
                cmd.Parameters("@psNroDocumentoId").Value = .NroDocumentoId
                cmd.Parameters.Add(New SqlParameter("@psAppPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psAppPasajero").Value = .AppPasajero
                cmd.Parameters.Add(New SqlParameter("@psApmPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psApmPasajero").Value = .ApmPasajero
                cmd.Parameters.Add(New SqlParameter("@psNomPasajero", SqlDbType.VarChar, 25))
                cmd.Parameters("@psNomPasajero").Value = .NomPasajero
                cmd.Parameters.Add(New SqlParameter("@psNacionalidadPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psNacionalidadPasajero").Value = .NacionalidadPasajero
                cmd.Parameters.Add(New SqlParameter("@psTlfPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psTlfPasajero").Value = .TlfPasajero
                cmd.Parameters.Add(New SqlParameter("@psRpcPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psRpcPasajero").Value = .RpcPasajero
                cmd.Parameters.Add(New SqlParameter("@psMailPasajero", SqlDbType.VarChar, 50))
                cmd.Parameters("@psMailPasajero").Value = .MailPasajero
                cmd.Parameters.Add(New SqlParameter("@psCodAnalisis", SqlDbType.VarChar, 7))
                cmd.Parameters("@psCodAnalisis").Value = .CodAnalisis
                cmd.Parameters.Add(New SqlParameter("@psCodLugarResidencia", SqlDbType.VarChar, 3))
                cmd.Parameters("@psCodLugarResidencia").Value = .CodLugarResidencia
            End With
            cnx.Open()
            cmd.ExecuteNonQuery()
            lExito = True
        Catch x As SqlException
            MsgBox("Reserva (pr_ModificarPasajero) --> " & x.Message, MsgBoxStyle.Critical)
            lExito = False
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return lExito
    End Function

    Public Function EliminarPasajero(ByVal sCodPasajero As Integer) As Boolean
        cmd.Connection = cnx
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "pr_EliminarPasajero"
        Try
            cmd.Parameters.Add(New SqlParameter("@pnCodPasajero", SqlDbType.Int))
            cmd.Parameters("@pnCodPasajero").Value = sCodPasajero
            cnx.Open()
            cmd.ExecuteNonQuery()
            lExito = True
        Catch x As SqlException
            MsgBox("Pasajero (pr_EliminarPasajero) --> " & x.Message, MsgBoxStyle.Critical)
            lExito = False
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return lExito
    End Function

    Public Function TraerPasajero(ByVal sCodp As Integer) As M_PasajeroBE
        Dim dtr As SqlDataReader
        Dim _pBE As New M_PasajeroBE
        Try
            cmd.Connection = cnx
            cmd.CommandType = CommandType.StoredProcedure
            cmd.CommandText = "pr_TraerPasajero"
            cmd.Parameters.Add(New SqlParameter("@pnCodPasajero", SqlDbType.Int))
            cmd.Parameters("@pnCodPasajero").Value = sCodp
            cnx.Open()
            dtr = cmd.ExecuteReader
            If dtr.HasRows = True Then
                dtr.Read()
                With _pBE
                    .CodPasajero = dtr("CodPasajero")
                    .NroDocumentoId = dtr("NroDocumentoId")
                    .AppPasajero = dtr("AppPasajero")
                    .ApmPasajero = dtr("ApmPasajero")
                    .NomPasajero = dtr("NomPasajero")
                    .NacionalidadPasajero = dtr("NacionalidadPasajero")
                    .TlfPasajero = dtr("TlfPasajero")
                    .RpcPasajero = dtr("RpcPasajero")
                    .MailPasajero = dtr("MailPasajero")
                    .CodAnalisis = dtr("CodAnalisis")
                    .CodLugarResidencia = dtr("CodLugarResidencia")
                End With
            End If
        Catch x As SqlException
            MsgBox("Reserva (pr_TraerPasajero) --> " & x.Message, MsgBoxStyle.Critical)
        Finally
            If cnx.State = ConnectionState.Open Then
                cnx.Close()
            End If
            cmd.Parameters.Clear()
        End Try
        Return _pBE
    End Function

    Public Function ListarPasajero(ByVal sFiltro As String) As DataTable
        Dim dt As New DataTable
        Dim sql As String = "SELECT CodPasajero,NroDocumentoId,AppPasajero,ApmPasajero,NomPasajero,NacionalidadPasajero,TlfPasajero,RpcPasajero,MailPasajero,CodAnalisis,CodLugarResidencia FROM dbo.M_Pasajero"
        Dim scriterio As String = IIf(sFiltro.Trim() = "", "", " Where " & Trim(sFiltro))
        Try
            cnx.Open()
            Dim da As New SqlDataAdapter(sql & scriterio, cnx)
            da.Fill(dt)
            cnx.Close()
            Return dt
        Catch myException As Exception
            MsgBox("Listar Pasajero --> " & myException.Message, MsgBoxStyle.Critical)
            Return Nothing
        End Try
    End Function

    Public Function TraerCodigo(ByVal sDni As String) As Integer
        Dim nCod As Integer = 0
        Try
            cnx.Open()
            With cmd
                .Connection = cnx
                .CommandType = CommandType.Text
                .CommandText = "SELECT CodPasajero FROM dbo.M_Pasajero WHERE NroDocumentoId='" & sDni & "'"
                nCod = .ExecuteScalar()
            End With
        Catch myException As Exception
            MsgBox("Correlativo --> " & myException.Message, MsgBoxStyle.Critical)
            Return Nothing
        Finally
            cnx.Close()
        End Try
        Return nCod
    End Function

    Public Function pr_Reservas() As DataSet
        Try
            Dim sql As String = " Select M_Pasajero.NroDocumentoId, M_Pasajero.NomPasajero, M_Pasajero.TlfPasajero,  M_Pasajero.RpcPasajero,  M_Pasajero.MailPasajero, " & _
               " M_Pasajero.CodAnalisis, M_Pasajero.NacionalidadPasajero, M_Pasajero.ApmPasajero,  M_Pasajero.AppPasajero,  M_Pasajero.CodPasajero," & _
               " M_Pasajero.AppPasajero+' '+M_Pasajero.ApmPasajero+' '+M_Pasajero.NomPasajero as Nombre,  Analisis.CodAnl+' '+Analisis.DesAnl as DesAnl " & _
               " FROM M_Pasajero INNER JOIN Analisis ON M_Pasajero.CodAnalisis = Analisis.CodAnl  "
            Dim sql1 As String = " SELECT D_Manifiesto.NroDocumentoId,D_Manifiesto.CodViaje,D_Manifiesto.CodAnalisis, " & _
                                 "  D_Manifiesto.CodCentroCosto,D_Manifiesto.FlgResponsable, C_Manifiesto.FchViaje,C_Manifiesto.HraViaje, M_EmpresaTransporte.NomEmpresa, " & _
                                 "  M_Lugar.NomLugar as Origen, M_Lugar1.NomLugar as Destino FROM D_Manifiesto INNER JOIN C_Manifiesto " & _
                                 "  ON D_Manifiesto.CodViaje = C_Manifiesto.CodViaje INNER JOIN M_EmpresaTransporte " & _
                                 "  ON C_Manifiesto.CodEmpresa = M_EmpresaTransporte.CodEmpresa INNER JOIN M_Lugar " & _
                                 "  ON C_Manifiesto.CodLugarOrigen = M_Lugar.CodLugar INNER JOIN M_Lugar M_Lugar1 " & _
                                 "  ON C_Manifiesto.CodLugarDestino = M_Lugar1.CodLugar SELECT D_Manifiesto.NroDocumentoId,D_Manifiesto.CodViaje,D_Manifiesto.CodAnalisis, " & _
                                 "  D_Manifiesto.CodCentroCosto,D_Manifiesto.FlgResponsable, " & _
                                 "  C_Manifiesto.FchViaje,C_Manifiesto.HraViaje, M_EmpresaTransporte.NomEmpresa, " & _
                                 "  M_Lugar.NomLugar as Origen, M_Lugar1.NomLugar as Destino " & _
                                 "  FROM D_Manifiesto INNER JOIN C_Manifiesto  " & _
                                 "  ON D_Manifiesto.CodViaje = C_Manifiesto.CodViaje INNER JOIN M_EmpresaTransporte " & _
                                 "  ON C_Manifiesto.CodEmpresa = M_EmpresaTransporte.CodEmpresa INNER JOIN M_Lugar " & _
                                 "  ON C_Manifiesto.CodLugarOrigen = M_Lugar.CodLugar INNER JOIN M_Lugar M_Lugar1 " & _
                                 "  ON C_Manifiesto.CodLugarDestino = M_Lugar1.CodLugar  "
            Dim cn As New SqlConnection(MiConexion.GetCnx)
            Dim dataSet As New DataSet()
            Using cn
                cn.Open()
                Dim oleDBAdapter1 As New OleDbDataAdapter(Sql, "Provider=SQLOLEDB;" & MiConexion.GetCnx)
                Dim oleDBAdapter2 As New OleDbDataAdapter(sql1, "Provider=SQLOLEDB;" & MiConexion.GetCnx)
                oleDBAdapter1.Fill(dataSet, "Pasajero")
                oleDBAdapter2.Fill(dataSet, "Detalle")
                dataSet.Relations.Add("Detalle", dataSet.Tables("Pasajero").Columns("NroDocumentoId"), dataSet.Tables("Detalle").Columns("NroDocumentoId"))
                Return dataSet
            End Using
        Catch myException As Exception
            MsgBox("PasajeroADO (pr_Reservas) --> " & myException.Message, MsgBoxStyle.Critical)
            Return Nothing
        End Try
    End Function

    Public Function pr_NumeroSiguiente() As Integer
        Try
            Dim nCod As Integer = 0
            Dim sql As String = "SELECT ISNULL(MAX(cast(Substring(NroDocumentoID,4,5)as int )),0)+1 as nrosgte FROM m_pasajero WHERE LEFT(NroDocumentoID,3) = 'PRV' "
            Dim cn As New SqlConnection(MiConexion.GetCnx)
            Using cn
                cn.Open()
                Dim mySqlCommand As SqlCommand
                Try
                    mySqlCommand = New SqlCommand(sql, cn)
                    nCod = mySqlCommand.ExecuteScalar
                    Return nCod
                Catch myException As Exception
                    Return 0
                End Try
            End Using
        Catch myException As Exception
            MsgBox("PasajeroADO (pr_NumeroSiguiente) --> " & myException.Message, MsgBoxStyle.Critical)
            Return 0
        End Try
    End Function

End Class
